home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / mcomm551.zip / ALLOCRB.C next >
C/C++ Source or Header  |  1991-01-06  |  2KB  |  47 lines

  1.  
  2. /*
  3.     ALLOCRB.C -- source file of code to allocate ring buffers and initialize
  4.      the required port structure members for MCOMM5 async routines.
  5.  
  6.     Mike Dumdei, 6 Holly Lane, Texarkana TX 75503  (c) 1989
  7. */
  8.  
  9. #if defined(__TURBOC__)
  10.     #include <alloc.h>
  11.     #define _fmalloc farmalloc
  12. #elif defined(__ZTC__)
  13.     #include <dos.h>
  14.     #include <stdlib.h>
  15.     #define _fmalloc farmalloc
  16. #else
  17.     #include <malloc.h>
  18. #endif
  19. #include <comm.h>
  20.  
  21. int AllocRingBuffer(
  22.  ASYNC *port,                                 /* pointer to port structure */
  23.  int rxsize,                     /* number bytes to use for receive buffer */
  24.  int txsize,                    /* number bytes to use for transmit buffer */
  25.  int useFARmem)                   /* flag set if using FAR mem for buffers */
  26. {
  27.     unsigned long memptr;
  28.     int memsize;
  29.  
  30.     memsize = rxsize + txsize;
  31.  
  32.     if (useFARmem || sizeof(char *) == 4)              /* if FAR Ring bufs */
  33.         memptr = (unsigned long)_fmalloc(memsize);
  34.     else                                /* if Ring buffers use NEAR memory */
  35.         memptr = (unsigned long)(unsigned int)malloc(memsize);
  36.  
  37.      /* pre-initialize 4 required structure members */
  38.     port->RxSize = rxsize;                          /* receive buffer size */
  39.     port->TxSize = txsize;                         /* transmit buffer size */
  40.     port->RingSeg = (int)(memptr >> 16);                        /* SEG adr */
  41.     port->RingOfst = (int)memptr;                          /* OFST address */
  42.     if (memptr == 0L)
  43.         return 0;                       /* return 0 if no memory available */
  44.     return 1;                                 /* return 1, had some memory */
  45. }
  46.  
  47.